{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# T5 Ctranslate2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Ctranslate2 able to speed up some huggingface transformers models, https://opennmt.net/CTranslate2/guides/transformers.html#\n",
    "\n",
    "**Currently in Malaya, Ctranslate2 converter only support for T5 and Llama2**."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-info\">\n",
    "\n",
    "This tutorial is available as an IPython notebook at [Malaya/example/t5-ctranslate2](https://github.com/huseinzol05/Malaya/tree/master/example/t5-ctranslate2).\n",
    "    \n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "\n",
    "os.environ['CUDA_VISIBLE_DEVICES'] = '0'\n",
    "os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/husein/dev/malaya/malaya/tokenizer.py:214: FutureWarning: Possible nested set at position 3397\n",
      "  self.tok = re.compile(r'({})'.format('|'.join(pipeline)))\n",
      "/home/husein/dev/malaya/malaya/tokenizer.py:214: FutureWarning: Possible nested set at position 3927\n",
      "  self.tok = re.compile(r'({})'.format('|'.join(pipeline)))\n"
     ]
    }
   ],
   "source": [
    "import malaya"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Load model in ctranslate2\n",
    "\n",
    "To convert to ctranslate2, just set `use_ctranslate2=True`,\n",
    "\n",
    "```python\n",
    "malaya.translation.huggingface(use_ctranslate2 = True)\n",
    "```\n",
    "\n",
    "This going to pass vector arguments to `malaya_boilerplate.converter.ctranslate2_translator`,\n",
    "\n",
    "```python\n",
    "def ctranslate2_translator(\n",
    "    model,\n",
    "    quantization: str = 'int8',\n",
    "    device: str = 'cpu',\n",
    "    device_index: int = 0,\n",
    "    **kwargs,\n",
    "):\n",
    "```\n",
    "\n",
    "You can read more about `quantization` and `device` at https://opennmt.net/CTranslate2/quantization.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Loading the tokenizer from the `special_tokens_map.json` and the `added_tokens.json` will be removed in `transformers 5`,  it is kept for forward compatibility, but it is recommended to update your `tokenizer_config.json` by uploading it again. You will see the new `added_tokens_decoder` attribute that will store the relevant information.\n",
      "You are using the default legacy behaviour of the <class 'transformers.models.t5.tokenization_t5.T5Tokenizer'>. If you see this, DO NOT PANIC! This is expected, and simply means that the `legacy` (previous) behavior will be used so nothing changes for you. If you want to use the new behaviour, set `legacy=False`. This should only be set if you understand what it means, and thouroughly read the reason why this was added as explained in https://github.com/huggingface/transformers/pull/24565\n",
      "Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n",
      "Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n",
      "Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n"
     ]
    }
   ],
   "source": [
    "ctranslate_model = malaya.translation.huggingface(use_ctranslate2 = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n"
     ]
    }
   ],
   "source": [
    "ctranslate_model_gpu = malaya.translation.huggingface(\n",
    "    use_ctranslate2 = True, \n",
    "    quantization = 'int8_bfloat16',\n",
    "    device = 'cuda',\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n"
     ]
    }
   ],
   "source": [
    "model = malaya.translation.huggingface()\n",
    "_ = model.eval()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Translate\n",
    "\n",
    "```python\n",
    "def generate(self, strings: List[str], from_lang: str = None, to_lang: str = 'ms', **kwargs):\n",
    "    \"\"\"\n",
    "    Generate texts from the input.\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    strings : List[str]\n",
    "    from_lang: str, optional (default=None)\n",
    "        old model required `from_lang` parameter to make it works properly,\n",
    "        while new model not required.\n",
    "    to_lang: str, optional (default='ms')\n",
    "        target language to translate.\n",
    "    **kwargs: vector arguments pass to huggingface `generate` method.\n",
    "        Read more at https://huggingface.co/docs/transformers/main_classes/text_generation\n",
    "\n",
    "        If you are using `use_ctranslate2`, vector arguments pass to ctranslate2 `translate_batch` method.\n",
    "        Read more at https://opennmt.net/CTranslate2/python/ctranslate2.Translator.html?highlight=translate_batch#ctranslate2.Translator.translate_batch\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    result: List[str]\n",
    "    \"\"\"\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "hansard = \"\"\"\n",
    "\\n26 DR.27.10.2021 \\n\\n \\nUSUL MENANGGUHKAN MESYUARAT  \\n\\nDI BAWAH P.M. 18(1) \\n \\n\\nPENJUALAN ASET GAS PETRONAS DI AZERBAIJAN \\n\\n \\n\\n11.33 pg. \\n\\nDato’ Seri Anwar bin Ibrahim [Port Dickson]: Tuan Yang di-Pertua, saya \\nmohon mengemukakan usul di bawah Peraturan Mesyuarat 18(1) dan 18(2) Peraturan-\\nperaturan Majlis Mesyuarat Dewan Rakyat seperti berikut: \\n\\n“Bahawa Dewan yang bersidang pada hari ini merundingkan \\nlaporan bahawa Petronas telah menjual aset gas di Azerbaijan dengan \\nharga hampir RM10 bilion berikutan desakan kerajaan menaikkan \\nbayaran dividen Petronas sebanyak RM25 bilion kepada kerajaan bagi \\ntahun 2021.” \\n\\n \\nPerkara ini adalah perkara tertentu kerana penjualan aset gas di Azerbaijan \\n\\nbernilai RM10 bilion dan juga pembayaran dividen kepada kerajaan sebanyak RM25 bilion \\nbagi tahun 2021 adalah berbahaya dan menjejaskan masa depan Petronas. Terkait \\ndengan― sedikit penjelasan.  Kerana tindakan seperti ini telah menyebabkan J.P. Morgan \\nmengeluarkan Petronas dari ESG Emerging Market Bond Index dan ESG Asia Credit \\nIndex.  \\n\\nOleh itu, perkara itu perlu disegerakan kerana Petronas mengalami defisit \\nberikutan pembayaran dividen berlebihan sejak tahun 2018 sehingga kini yang memaksa \\nPetronas menjual aset atau meminjam lebih banyak dana luar negara bagi menampung \\naliran tunai.   \\n\\nIni diperkukuh dengan kenyataan Tengku Muhammad Taufik, CEO Petronas, “If \\nthere is a policy shift but it comes too suddenly or too slowly, not only Petronas but the \\nentire Malaysian economy could be put at risk, with regards to our energy mix.” \\n\\nIni perkara berkenaan dengan kepentingan orang ramai, malah seluruh ekonomi \\nnegara, kerana Petronas adalah institusi penting ekonomi negara dan sewajarnya \\ndiperkukuh kekuatannya dan tidak dilemahkan penarafan syarikat. Kemampuan untuk \\nmelabur bagi menjana keuntungan masa depan yang mampu untuk membayar dividen \\nyang munasabah kepada kerajaan demi kepentingan rakyat. Dengan tambahan RM7 \\nbilion tahun ini, hasil Petronas akan berjumlah RM44.8 bilion atau 18 peratus daripada \\npendapatan kerajaan bagi tahun 2021 daripada RM37.8 bilion sebelumnya. \\n\\nJadi, mohon persetujuan Tuan Yang di-Pertua untuk dibahaskan. [Tepuk] \\n\\nTuan Yang di-Pertua: Terima kasih Yang Berhormat. Sebenarnya Yang \\nBerhormat perlu melengkapkan teks Yang Berhormat dan cuma dibaca teks tersebut \\nmengikut peraturan. Akan tetapi, tak apa.  \\n\\nAhli-ahli Yang Berhormat, saya telah menerima satu pemberitahu usul di bawah \\nPeraturan Mesyuarat 18(1) oleh Yang Berhormat Port Dickson, Ketua Pembangkang pada \\nhari Isnin, 25 Oktober 2021. Teks usul itu adalah seperti yang dibacakan tadi dengan \\nsedikit tambahan oleh Ahli Yang Berhormat Port Dickson sebentar tadi.  \\n\\nBagi membolehkan perkara ini ditimbangkan oleh Majlis Mesyuarat, saya \\nhendaklah berpuas hati bahawa perkara yang dibangkitkan oleh Yang Berhormat itu \\nmematuhi tiga syarat seperti mana biasalah iaitu: \\n\\n(i) perkara tertentu; \\n\\n(ii) bagi kepentingan orang ramai; dan \\n\\n(iii) berkehendak disegerakan. \\n\\n\\n\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "code = \"\"\"\n",
    "`Untuk menggunakan numpy, pertama, Anda perlu menginstalnya melalui pip. Anda dapat melakukannya dengan menjalankan perintah `pip install numpy` di terminal Anda.\n",
    "Setelah numpy terinstal, Anda dapat mengimpor modul numpy dengan menambahkan baris `import numpy as np` di awal program Anda.\n",
    "Berikut adalah contoh beberapa operasi dasar numpy:\n",
    "``` python\n",
    "import numpy as np\n",
    "# membuat array numpy dari list\n",
    "my_list = [1, 2, 3, 4, 5]\n",
    "my_array = np.array(my_list)\n",
    "# membuat array numpy dengan rentang nilai tertentu\n",
    "my_range = np.arange(0, 10, 2) # nilai awal, nilai akhir, dan loncatan\n",
    "# membuat array numpy dengan nilai acak\n",
    "my_random_array = np.random.rand(3, 3) # 3 baris dan 3 kolom\n",
    "# mengakses elemen array numpy\n",
    "print(my_array[0]) # mengakses elemen pertama\n",
    "# melakukan operasi matematika pada array numpy\n",
    "my_array = my_array + 1 # menambah setiap elemen dengan 1\n",
    "my_array = my_array * 2 # mengalikan setiap elemen dengan 2\n",
    "# mengubah bentuk array numpy\n",
    "my_array = np.reshape(my_array, (2, 5)) # menjadi array 2D dengan 2 baris dan 5 kolom\n",
    "```\n",
    "Itulah beberapa operasi dasar numpy. Anda dapat menemukan dokumentasi resmi numpy di https://numpy.org/doc/stable/.\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "s = \"\"\"\n",
    "Chain-of-Thought Prompting Elicits Reasoning\n",
    "in Large Language Models\n",
    "JasonWei Xuezhi Wang Dale Schuurmans Maarten Bosma\n",
    "Brian Ichter Fei Xia Ed H. Chi Quoc V. Le Denny Zhou\n",
    "Google Research, Brain Team\n",
    "{jasonwei,dennyzhou}@google.com\n",
    "Abstract\n",
    "We explore how generating a chain of thought—a series of intermediate reasoning\n",
    "steps—significantly improves the ability of large language models to perform\n",
    "complex reasoning. In particular, we show how such reasoning abilities emerge\n",
    "naturally in sufficiently large language models via a simple method called chain-ofthought\n",
    "prompting, where a few chain of thought demonstrations are provided as\n",
    "exemplars in prompting.\n",
    "Experiments on three large language models show that chain-of-thought prompting\n",
    "improves performance on a range of arithmetic, commonsense, and symbolic\n",
    "reasoning tasks. The empirical gains can be striking. For instance, prompting a\n",
    "PaLM 540B with just eight chain-of-thought exemplars achieves state-of-the-art\n",
    "accuracy on the GSM8K benchmark of math word problems, surpassing even\n",
    "finetuned GPT-3 with a verifier.\n",
    "A: The cafeteria had 23 apples originally. They used\n",
    "20 to make lunch. So they had 23 - 20 = 3. They\n",
    "bought 6 more apples, so they have 3 + 6 = 9. The\n",
    "answer is 9.\n",
    "Chain-of-Thought Prompting\n",
    "Q: Roger has 5 tennis balls. He buys 2 more cans of\n",
    "tennis balls. Each can has 3 tennis balls. How many\n",
    "tennis balls does he have now?\n",
    "A: The answer is 11.\n",
    "Q: The cafeteria had 23 apples. If they used 20 to\n",
    "make lunch and bought 6 more, how many apples\n",
    "do they have?\n",
    "A: The answer is 27.\n",
    "Standard Prompting\n",
    "Q: Roger has 5 tennis balls. He buys 2 more cans of\n",
    "tennis balls. Each can has 3 tennis balls. How many\n",
    "tennis balls does he have now?\n",
    "A: Roger started with 5 balls. 2 cans of 3 tennis balls\n",
    "each is 6 tennis balls. 5 + 6 = 11. The answer is 11.\n",
    "Q: The cafeteria had 23 apples. If they used 20 to\n",
    "make lunch and bought 6 more, how many apples\n",
    "do they have?\n",
    "Model Input\n",
    "Model Output Model Output\n",
    "Model Input\n",
    "Figure 1: Chain-of-thought prompting enables large language models to tackle complex arithmetic,\n",
    "commonsense, and symbolic reasoning tasks. Chain-of-thought reasoning processes are highlighted.\n",
    "36th Conference on Neural Information Processing Systems (NeurIPS 2022).\n",
    "arXiv:2201.11903v6 [cs.CL] 10 Jan 2023\n",
    "1 Introduction\n",
    "Math Word Problems (GSM8K)\n",
    "0\n",
    "20\n",
    "40\n",
    "60\n",
    "80\n",
    "100\n",
    "33\n",
    "55\n",
    "18\n",
    "57\n",
    "Solve rate (%)\n",
    "Finetuned GPT-3 175B\n",
    "Prior best\n",
    "PaLM 540B: standard prompting\n",
    "PaLM 540B: chain-of-thought prompting\n",
    "Figure 2: PaLM 540B uses chain-ofthought\n",
    "prompting to achieve new stateof-\n",
    "the-art performance on the GSM8K\n",
    "benchmark of math word problems.\n",
    "Finetuned GPT-3 and prior best are from\n",
    "Cobbe et al. (2021).\n",
    "The NLP landscape has recently been revolutionized by\n",
    "language models (Peters et al., 2018; Devlin et al., 2019;\n",
    "Brown et al., 2020, inter alia). Scaling up the size of language\n",
    "models has been shown to confer a range of benefits,\n",
    "such as improved performance and sample efficiency (Kaplan\n",
    "et al., 2020; Brown et al., 2020, inter alia). However,\n",
    "scaling up model size alone has not proved sufficient for\n",
    "achieving high performance on challenging tasks such as\n",
    "arithmetic, commonsense, and symbolic reasoning (Rae\n",
    "et al., 2021).\n",
    "This work explores how the reasoning ability of large\n",
    "language models can be unlocked by a simple method\n",
    "motivated by two ideas. First, techniques for arithmetic\n",
    "reasoning can benefit from generating natural language\n",
    "rationales that lead to the final answer. Prior work has\n",
    "given models the ability to generate natural language intermediate\n",
    "steps by training from scratch (Ling et al., 2017)\n",
    "or finetuning a pretrained model (Cobbe et al., 2021), in\n",
    "addition to neuro-symbolic methods that use formal languages\n",
    "instead of natural language (Roy and Roth, 2015;\n",
    "Chiang and Chen, 2019; Amini et al., 2019; Chen et al.,\n",
    "2019). Second, large language models offer the exciting\n",
    "prospect of in-context few-shot learning via prompting. That is, instead of finetuning a separate\n",
    "language model checkpoint for each new task, one can simply “prompt” the model with a few\n",
    "input–output exemplars\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Hansard text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 22.3 s, sys: 202 ms, total: 22.5 s\n",
      "Wall time: 5.67 s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['26 DR.27.10.2021\\n\\nUSUL MENANGGUHKAN MESYUARAT\\n\\nDI BAWAH P.M. 18(1)\\n\\nPENJUALAN ASET GAS PETRONAS DI AZERBAIJAN\\n\\n11.33 pg.\\n\\nDato\\' Seri Anwar bin Ibrahim [Port Dickson]: Tuan Yang di-Pertua, saya mohon mengemukakan usul di bawah Peraturan Mesyuarat 18(1) dan 18(2) Peraturan-\\nperaturan Majlis Mesyuarat Dewan Rakyat seperti berikut:\\n\\n\"Bahawa Dewan yang bersidang hari ini merundingkan\\nlaporan bahawa Petronas telah menjual aset gas di Azerbaijan dengan\\nharga hampir RM10 bilion berikutan desakan kerajaan menaikkan\\nbayaran dividen Petronas sebanyak RM25 bilion kepada kerajaan bagi\\ntahun 2021.\"\\n\\n \\nPerkara ini adalah perkara tertentu kerana penjualan aset gas di Azerbaijan\\n\\nbernilai RM10 bilion dan juga pembayaran dividen kepada kerajaan sebanyak RM25 bilion\\nbagi tahun 2021 adalah berbahaya dan menjejaskan masa depan Petronas. Terkait\\ndengan\\' sedikit penjelasan. Oleh kerana tindakan seperti ini telah menyebabkan J.P. Morgan\\nmengeluarkan Petronas dari ESG Emerging Market Bond Index dan ESG Asia Credit\\nIndex.\\n\\nOleh itu, perkara itu perlu disegerakan kerana Petronas mengalami defisit\\nberikutan pembayaran dividen berlebihan sejak tahun 2018 sehingga kini yang memaksa\\nPetronas menjual aset atau meminjam lebih banyak dana luar negara untuk menampung\\naliran tunai.\\n\\nIni diperkukuh dengan kenyataan Tengku Muhammad Taufik, CEO Petronas, \"Jika\\nada policy shift tapi ia datang terlalu tiba atau terlalu perlahan, bukan sahaja Petronas tetapi the entire Malaysian economy could be put at risk, berkenaan dengan energy mix kita.\"\\n\\nIni perkara berkenaan dengan kepentingan orang ramai, malah seluruh ekonomi\\nnegara, kerana Petronas adalah institusi penting ekonomi negara dan sewajarnya\\ndiperkukuh kekuatannya dan tidak dilemahkan penarafan syarikat. Kemampuan untuk\\nmelabur bagi menjana keuntungan masa depan yang mampu untuk membayar dividen\\nyang munasabah kepada kerajaan demi kepentingan rakyat. Dengan tambahan RM7\\nbilion tahun ini, hasil Petronas akan berjumlah RM44.8 bilion atau 18 peratus daripada\\npendapatan kerajaan bagi tahun 2021 daripada RM37.8 bilion sebelumnya.\\n\\nJadi, mohon persetujuan Tuan Yang di-Pertua untuk dibahaskan. [Applause]\\n\\nTuan Yang di-Pertua: Terima kasih Yang Berhormat. Sebenarnya Yang Berhormat perlu melengkapkan teks Yang Berhormat dan hanya dibaca teks tersebut\\nmengikut peraturan. Akan tetapi, tak apa.\\n\\nAhli-ahli Yang Berhormat, saya telah menerima satu pemberitahu usul di bawah\\nPeraturan Mesyuarat 18(1) oleh Yang Berhormat Port Dickson, Ketua Pembangkang pada\\nhari Isnin, 25 Oktober 2021. Teks usul itu adalah seperti yang dibacakan tadi dengan\\nsedikit tambahan oleh Ahli Yang Berhormat Port Dickson sebentar tadi.\\n\\nBagi membolehkan perkara ini ditimbangkan oleh Majlis Mesyuarat, saya\\nhendaklah berpuas hati bahawa perkara yang dibangkitkan oleh Yang Berhormat itu\\nmematuhi tiga syarat seperti biasalah iaitu:\\n\\n(i) perkara tertentu;\\n\\n(ii) bagi kepentingan orang ramai; dan\\n\\n(iii) berkehendak disegerakan.\\n\\n\\n']"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "ctranslate_model.generate(\n",
    "    [hansard], \n",
    "    max_input_length=2048,\n",
    "    max_decoding_length=2048,\n",
    "    disable_unk=True,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 10.9 s, sys: 145 ms, total: 11 s\n",
      "Wall time: 3.71 s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['26 DR.27.10.2021\\n\\nUSUL MENANGGUHKAN MESYUARAT\\n\\nDI BAWAH P.M. 18(1)\\n\\nPENJUALAN ASET GAS PETRONAS DI AZERBAIJAN\\n\\n11.33 pg.\\n\\nDato\\' Seri Anwar bin Ibrahim [Port Dickson]: Tuan Yang di-Pertua, saya mohon mengemukakan usul di bawah Peraturan Mesyuarat 18(1) dan 18(2) Peraturan-\\nperaturan Majlis Mesyuarat Dewan Rakyat seperti berikut:\\n\\n\"Bahawa Dewan yang bersidang hari ini merundingkan\\nlaporan bahawa Petronas telah menjual aset gas di Azerbaijan dengan\\nharga hampir RM10 bilion berikutan desakan kerajaan menaikkan\\nbayaran dividen Petronas sebanyak RM25 bilion kepada kerajaan bagi\\ntahun 2021.\"\\n\\n \\nPerkara ini adalah perkara tertentu kerana penjualan aset gas di Azerbaijan\\n\\nbernilai RM10 bilion dan juga pembayaran dividen kepada kerajaan sebanyak RM25 bilion\\nbagi tahun 2021 adalah berbahaya dan menjejaskan masa depan Petronas. Terkait\\ndengan\\' sedikit penjelasan. Oleh kerana tindakan seperti ini telah menyebabkan J.P. Morgan\\nmengeluarkan Petronas dari ESG Emerging Market Bond Index dan ESG Asia Credit\\nIndex.\\n\\nOleh itu, perkara itu perlu disegerakan kerana Petronas mengalami defisit\\nberikutan pembayaran dividen berlebihan sejak tahun 2018 sehingga kini yang memaksa\\nPetronas menjual aset atau meminjam lebih banyak dana luar negara untuk menampung\\naliran tunai.\\n\\nIni diperkukuh dengan kenyataan Tengku Muhammad Taufik, CEO Petronas, \"Jika\\nada policy shift tapi ia datang terlalu tiba atau terlalu perlahan, bukan sahaja Petronas tetapi the entire Malaysian economy could be put at risk, berkenaan dengan energy mix kita.\"\\n\\nIni perkara berkenaan dengan kepentingan orang ramai, malah seluruh ekonomi\\nnegara, kerana Petronas adalah institusi penting ekonomi negara dan sewajarnya\\ndiperkukuh kekuatannya dan tidak dilemahkan penarafan syarikat. Keupayaan untuk\\nmelabur bagi menjana keuntungan masa depan yang mampu untuk membayar dividen\\nyang munasabah kepada kerajaan demi kepentingan rakyat. Dengan tambahan RM7\\nbilion tahun ini, hasil Petronas akan berjumlah RM44.8 bilion atau 18 peratus daripada\\npendapatan kerajaan bagi tahun 2021 daripada RM37.8 bilion sebelumnya.\\n\\nJadi, mohon persetujuan Tuan Yang di-Pertua untuk dibahaskan. [Applause]\\n\\nTuan Yang di-Pertua: Terima kasih Yang Berhormat. Sebenarnya Yang Berhormat perlu melengkapkan teks Yang Berhormat dan hanya dibaca teks tersebut\\nmengikut peraturan. Akan tetapi, tak apa.\\n\\nAhli-ahli Yang Berhormat, saya telah menerima satu pemberitahu usul di bawah\\nPeraturan Mesyuarat 18(1) oleh Yang Berhormat Port Dickson, Ketua Pembangkang pada\\nhari Isnin, 25 Oktober 2021. Teks usul itu adalah seperti yang dibacakan tadi dengan\\nsedikit tambahan oleh Ahli Yang Berhormat Port Dickson sebentar tadi.\\n\\nBagi membolehkan perkara ini ditimbangkan oleh Majlis Mesyuarat, saya\\nhendaklah berpuas hati bahawa perkara yang dibangkitkan oleh Yang Berhormat itu\\nmematuhi tiga syarat seperti biasalah iaitu:\\n\\n(i) perkara tertentu;\\n\\n(ii) bagi kepentingan orang ramai; dan\\n\\n(iii) berkehendak disegerakan.\\n\\n\\n']"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "ctranslate_model_gpu.generate(\n",
    "    [hansard], \n",
    "    max_input_length=2048,\n",
    "    max_decoding_length=2048,\n",
    "    disable_unk=True,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 14min 31s, sys: 8.69 s, total: 14min 40s\n",
      "Wall time: 3min 47s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['26 DR.27.10.2021\\n\\nUSUL MENANGGUHKAN MESYUARAT\\n\\nDI BAWAH P.M. 18(1)\\n\\nPENJUALAN ASET GAS PETRONAS DI AZERBAIJAN\\n\\n11.33 pg.\\n\\nDato Seri Anwar bin Ibrahim [Port Dickson]: Tuan Yang di-Pertua, saya mohon mengemukakan usul di bawah Peraturan Mesyuarat 18(1) dan 18(2) Peraturan-\\nperaturan Majlis Mesyuarat Dewan Rakyat seperti berikut:\\n\\n\"Bahawa Dewan yang bersidang hari ini merundingkan\\nlaporan bahawa Petronas telah menjual aset gas di Azerbaijan dengan\\nharga hampir RM10 bilion berikutan desakan kerajaan menaikkan\\nbayaran dividen Petronas sebanyak RM25 bilion kepada kerajaan bagi\\ntahun 2021.\\n\\n \\nPerkara ini adalah perkara tertentu kerana penjualan aset gas di Azerbaijan\\n\\nbernilai RM10 bilion dan juga pembayaran dividen kepada kerajaan sebanyak RM25 bilion\\nbagi tahun 2021 adalah berbahaya dan menjejaskan masa depan Petronas. Terkait\\ndengan sedikit penjelasan. Oleh kerana tindakan seperti ini telah menyebabkan J.P. Morgan\\nmengeluarkan Petronas dari ESG Emerging Market Bond Index dan ESG Asia Credit\\nIndex.\\n\\nOleh itu, perkara itu perlu disegerakan kerana Petronas mengalami defisit\\nberikutan pembayaran dividen berlebihan sejak tahun 2018 sehingga kini yang memaksa\\nPetronas menjual aset atau meminjam lebih banyak dana luar negara untuk menampung\\naliran tunai.\\n\\nIni diperkukuh dengan kenyataan Tengku Muhammad Taufik, CEO Petronas, Jika\\nada policy shift tapi ia datang terlalu tiba atau terlalu perlahan, bukan sahaja Petronas tetapi the entire Malaysian economy could be put at risk, berkenaan dengan energy mix kita.\\n\\nIni perkara berkenaan dengan kepentingan orang ramai, malah seluruh ekonomi\\nnegara, kerana Petronas adalah institusi penting ekonomi negara dan sewajarnya\\ndiperkukuh kekuatannya dan tidak dilemahkan penarafan syarikat. Kemampuan untuk\\nmelabur bagi menjana keuntungan masa depan yang mampu untuk membayar dividen\\nyang munasabah kepada kerajaan demi kepentingan rakyat. Dengan tambahan RM7\\nbilion tahun ini, hasil Petronas akan berjumlah RM44.8 bilion atau 18 peratus daripada\\npendapatan kerajaan bagi tahun 2021 daripada RM37.8 bilion sebelumnya.\\n\\nJadi, mohon persetujuan Tuan Yang di-Pertua untuk dibahaskan. [Applause]\\n\\nTuan Yang di-Pertua: Terima kasih Yang Berhormat. Sebenarnya Yang Berhormat perlu melengkapkan teks Yang Berhormat dan hanya dibaca teks tersebut\\nmengikut peraturan. Akan tetapi, tak apa.\\n\\nAhli-ahli Yang Berhormat, saya telah menerima satu pemberitahu usul di bawah\\nPeraturan Mesyuarat 18(1) oleh Yang Berhormat Port Dickson, Ketua Pembangkang pada\\nhari Isnin, 25 Oktober 2021. Teks usul itu adalah seperti yang dibacakan tadi dengan\\nsedikit tambahan oleh Ahli Yang Berhormat Port Dickson sebentar tadi.\\n\\nBagi membolehkan perkara ini ditimbangkan oleh Majlis Mesyuarat, saya\\nhendaklah berpuas hati bahawa perkara yang dibangkitkan oleh Yang Berhormat itu\\nmematuhi tiga syarat seperti biasalah iaitu:\\n\\n(i) perkara tertentu;\\n\\n(ii) bagi kepentingan orang ramai; dan\\n\\n(iii) berkehendak disegerakan.\\n\\n\\n']"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "model.generate([hansard], to_lang = 'ms', max_length = 2048)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Code"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 8.49 s, sys: 47.8 ms, total: 8.54 s\n",
      "Wall time: 2.18 s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['`Untuk menggunakan numpy, pertama, anda perlu memasangnya melalui pip. Anda boleh melakukannya dengan menjalankan perintah `pip install numpy` di terminal anda.\\nSetelah numpy dipasang, anda boleh mengimport modul numpy dengan menambahkan baris `import numpy as np` pada awal program anda.\\nBerikut adalah contoh beberapa operasi asas numpy:\\n``` python\\nimport numpy as np\\n# membuat array numpy dari senarai\\nmy_list = [1, 2, 3, 4, 5]\\nmy_array = np.array(my_list)\\n# membuat array numpy dengan julat nilai tertentu\\nmy_range = np.arange(0, 10, 2) # nilai awal, nilai akhir, dan loncatan\\n# membuat array numpy dengan nilai rawak\\nmy_random_array = np.random.rand(3, 3) # 3 baris dan 3 lajur\\n# mengakses elemen array numpy\\nprint(my_array[0]) # mengakses elemen pertama\\n# melakukan operasi matematik pada array numpy\\nmy_array = my_array + 1 # menambahkan setiap elemen dengan 1\\nmy_array = my_array * 2 # mendarab setiap elemen dengan 2\\n# mengubah bentuk array numpy\\nmy_array = np.reshape(my_array, (2, 5)) # menjadi array 2D dengan 2 baris dan 5 lajur\\n```\\nItulah beberapa operasi asas numpy. Anda boleh mencari dokumentasi rasmi numpy di https://numpy.org/doc/stable/.\\n']"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "ctranslate_model.generate(\n",
    "    [code], \n",
    "    max_input_length=2048,\n",
    "    max_decoding_length=2048,\n",
    "    disable_unk=True,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 2.47 s, sys: 0 ns, total: 2.47 s\n",
      "Wall time: 620 ms\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['`Untuk menggunakan numpy, pertama, anda perlu memasangnya melalui pip. Anda boleh melakukannya dengan menjalankan perintah `pip install numpy` di terminal anda.\\nSetelah numpy dipasang, anda boleh mengimport modul numpy dengan menambahkan baris `import numpy as np` pada awal program anda.\\nBerikut adalah contoh beberapa operasi asas numpy:\\n``` python\\nimport numpy as np\\n# membuat array numpy dari senarai\\nmy_list = [1, 2, 3, 4, 5]\\nmy_array = np.array(my_list)\\n# membuat array numpy dengan julat nilai tertentu\\nmy_range = np.arange(0, 10, 2) # nilai awal, nilai akhir, dan loncatan\\n# membuat array numpy dengan nilai rawak\\nmy_random_array = np.random.rand(3, 3) # 3 baris dan 3 lajur\\n# mengakses elemen array numpy\\nprint(my_array[0]) # mengakses elemen pertama\\n# melakukan operasi matematik pada array numpy\\nmy_array = my_array + 1 # menambahkan setiap elemen dengan 1\\nmy_array = my_array * 2 # mendarab setiap elemen dengan 2\\n# mengubah bentuk array numpy\\nmy_array = np.reshape(my_array, (2, 5)) # menjadi array 2D dengan 2 baris dan 5 lajur\\n```\\nItulah beberapa operasi asas numpy. Anda boleh mencari dokumentasi rasmi numpy di https://numpy.org/doc/stable/.\\n']"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "ctranslate_model_gpu.generate(\n",
    "    [code], \n",
    "    max_input_length=2048,\n",
    "    max_decoding_length=2048,\n",
    "    disable_unk=True,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 3min 29s, sys: 504 ms, total: 3min 29s\n",
      "Wall time: 54.2 s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['`Untuk menggunakan numpy, pertama, anda perlu memasangnya melalui pip. Anda boleh melakukannya dengan menjalankan perintah `pip install numpy` di terminal anda.\\nSetelah numpy dipasang, anda boleh mengimport modul numpy dengan menambahkan baris `import numpy as np` pada awal program anda.\\nBerikut adalah contoh beberapa operasi asas numpy:\\n``` python\\nimport numpy as np\\n# mencipta array numpy dari senarai\\nmy_list = [1, 2, 3, 4, 5]\\nmy_array = np.array(my_list)\\n# mencipta array numpy dengan julat nilai tertentu\\nmy_range = np.arange(0, 10, 2) # nilai awal, nilai akhir, dan loncatan\\n# mencipta array numpy dengan nilai rawak\\nmy_random_array = np.random.rand(3, 3) # 3 baris dan 3 lajur\\n# mengakses elemen array numpy\\nprint(my_array[0]) # mengakses elemen pertama\\n# melakukan operasi matematik pada array numpy\\nmy_array = my_array + 1 # menambahkan setiap elemen dengan 1\\nmy_array = my_array * 2 # mendarab setiap elemen dengan 2\\n# mengubah bentuk array numpy\\nmy_array = np.reshape(my_array, (2, 5)) # menjadi array 2D dengan 2 baris dan 5 lajur\\n```\\nItulah beberapa operasi asas numpy. Anda boleh mencari dokumentasi rasmi numpy di https://numpy.org/doc/stable/.\\n']"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "model.generate([code], to_lang = 'ms', max_length = 2048)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Long document"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 1min 1s, sys: 793 ms, total: 1min 1s\n",
      "Wall time: 15.9 s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['Pengesahan Rantaian Berfikir Menghapuskan Alasan\\ndalam Model Bahasa Besar\\nJasonWei Xuezhi Wang Dale Schuurmans Maarten Bosma\\nBrian Ichter Fei Xia Ed H. Chi Quoc V. Le Denny Zhou\\nPenyelidikan Google, Pasukan Otak\\n{jasonwei,dennyzhou}@google.com\\nAbstrak\\nKami meneroka cara menjana rantaian pemikiran-satu siri penaakulan perantaraan\\nlangkah-langkah yang meningkatkan keupayaan model bahasa besar untuk melakukan\\npenaakulan yang kompleks. Khususnya, kami menunjukkan bagaimana kebolehan penaakulan sedemikian muncul\\nsecara semula jadi dalam model bahasa yang cukup besar melalui kaedah mudah yang dipanggil rantaian-fikir\\nmendorong, di mana beberapa demonstrasi rantaian pemikiran disediakan sebagai\\ncontoh dalam dorongan.\\nEksperimen pada tiga model bahasa besar menunjukkan bahawa dorongan rantaian-fikir\\nmeningkatkan prestasi pada pelbagai aritmetik, commonsense, dan simbolik\\ntugas penaakulan. Keuntungan empirikal boleh menarik. Sebagai contoh, mendorong a\\nPaLM 540B dengan hanya lapan contoh rantaian-fikir mencapai canggih\\nketepatan pada penanda aras GSM8K masalah perkataan matematik, melebihi walaupun\\nGPT-3 yang diperhalusi dengan pengverifikasi.\\nA: Kafeteria mempunyai 23 epal pada asalnya. Mereka menggunakan\\n20 untuk membuat makan tengah hari. Jadi mereka mempunyai 23 - 20 = 3. Mereka\\nmembeli 6 lagi epal, jadi mereka mempunyai 3 + 6 = 9. Jawapannya ialah 9.\\nPrompting Rantaian\\nS: Roger mempunyai 5 bola tenis. Dia membeli 2 tin lagi\\nbola tenis. Setiap tin mempunyai 3 bola tenis. Berapa banyak\\nbola tenis yang dia ada sekarang?\\nA: Jawapannya ialah 11.\\nS: Kafeteria mempunyai 23 epal. Jika mereka menggunakan 20 untuk\\nmembuat makan tengah hari dan membeli 6 lagi, berapa banyak epal\\nadakah mereka mempunyai?\\nA: Jawapannya ialah 27.\\nPrompting Standard\\nS: Roger mempunyai 5 bola tenis. Dia membeli 2 tin lagi\\nbola tenis. Setiap tin mempunyai 3 bola tenis. Berapa banyak\\nbola tenis yang dia ada sekarang?\\nA: Roger bermula dengan 5 bola. 2 tin 3 bola tenis\\nsetiap satu ialah 6 bola tenis. 5 + 6 = 11. Jawapannya ialah 11.\\nS: Kafeteria mempunyai 23 epal. Jika mereka menggunakan 20 untuk\\nmembuat makan tengah hari dan membeli 6 lagi, berapa banyak epal\\nadakah mereka mempunyai?\\nInput Model\\nOutput Model Output\\nInput Model\\nRajah 1: Penyegerakan Rantaian pemikiran membolehkan model bahasa besar menangani aritmetik yang kompleks,\\ncommonsense, dan tugas penaakulan simbolik. Proses penaakulan Rantaian difikirkan diserlahkan.\\nPersidangan ke-36 mengenai Sistem Pemprosesan Maklumat Neural (NeurIPS 2022).\\narXiv:2201.11903v6 [cs.CL] 10 Jan 2023\\n1 Pengenalan\\nMasalah Perkataan Matematik (GSM8K)\\n0\\n20\\n40\\n60\\n80\\n100\\n33\\n55\\n18\\n57\\nKadar penyelesaian (%)\\nGPT-3 175B yang diperhalusi\\nTerbaik sebelum ini\\nPaLM 540B: dorongan standard\\nPaLM 540B: dorongan rantaian-fikir\\nRajah 2: PaLM 540B menggunakan rantaian-fikir\\nmendorong untuk mencapai canggih baharu-\\nprestasi terkini pada GSM8K\\npenanda aras masalah perkataan matematik.\\nGPT-3 yang diperhalusi dan yang terbaik sebelum ini adalah daripada\\nCobbe et al. (2021).\\nLandskap NLP baru-baru ini telah direvolusikan oleh\\nmodel bahasa (Peters et al., 2018; Devlin et al., 2019;\\nBrown et al., 2020, inter alia). Mengukur saiz bahasa\\nmodel telah ditunjukkan untuk memberikan pelbagai faedah,\\nseperti prestasi yang lebih baik dan kecekapan sampel (Kaplan\\net al., 2020; Brown et al., 2020, inter alia). Walau bagaimanapun,\\nskala saiz model sahaja tidak terbukti mencukupi untuk\\nmencapai prestasi tinggi pada tugas yang mencabar seperti\\naritmetik, commonsense, dan penaakulan simbolik (Rae\\net al., 2021).\\nKerja ini meneroka bagaimana keupayaan penaakulan besar\\nmodel bahasa boleh dibuka kunci oleh kaedah mudah\\ndidorong oleh dua idea. Pertama, teknik untuk aritmetik\\npenaakulan boleh mendapat manfaat daripada menjana bahasa semula jadi\\nrasional yang membawa kepada jawapan terakhir. Kerja terdahulu telah\\nmemberikan model keupayaan untuk menjana bahasa semula jadi perantaraan\\nlangkah dengan latihan dari awal (Ling et al., 2017)\\natau memperhalusi model pralatihan (Cobbe et al., 2021), di\\ntambahan kepada kaedah neuro-symbolik yang menggunakan bahasa formal\\nbukannya bahasa semula jadi (Roy dan Roth, 2015;\\nChiang dan Chen, 2019; Amini et al., 2019; Chen et al.,\\n2019). Kedua, model bahasa besar menawarkan yang menarik\\nprospek pembelajaran dalam konteks beberapa tangkapan melalui dorongan. Iaitu, bukannya memperhalusi satu pusat pemeriksaan model bahasa untuk setiap tugas baharu, seseorang boleh \"mendorong\" model dengan beberapa\\ncontoh input–output\\n']"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "ctranslate_model.generate(\n",
    "    [s], \n",
    "    max_input_length=2048,\n",
    "    max_decoding_length=2048,\n",
    "    disable_unk=True,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 9.51 s, sys: 12.2 ms, total: 9.52 s\n",
      "Wall time: 2.4 s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['Pengesanan Rantaian Berdepan Menghapuskan Alasan\\ndalam Model Bahasa Besar\\nJasonWei Xuezhi Wang Dale Schuurmans Maarten Bosma\\nBrian Ichter Fei Xia Ed H. Chi Quoc V. Le Denny Zhou\\nPenyelidikan Google, Pasukan Otak\\n{jasonwei,dennyzhou}@google.com\\nAbstrak\\nKami meneroka cara menjana rantaian pemikiran - satu siri penaakulan perantaraan\\nlangkah - meningkatkan secara ketara keupayaan model bahasa besar untuk melakukan\\npenaakulan yang kompleks. Khususnya, kami menunjukkan bagaimana kebolehan penaakulan sedemikian muncul\\nsecara semula jadi dalam model bahasa yang cukup besar melalui kaedah mudah yang dipanggil rantaian pemikiran\\nmendorong, di mana beberapa demonstrasi rantaian pemikiran disediakan sebagai\\ncontoh dalam dorongan.\\nEksperimen pada tiga model bahasa besar menunjukkan bahawa dorongan rantaian pemikiran\\nmeningkatkan prestasi pada pelbagai aritmetik, akal dan simbolik\\ntugas penaakulan. Keuntungan empirikal boleh menarik. Sebagai contoh, mendorong a\\nPaLM 540B dengan hanya lapan contoh rantaian pemikiran mencapai keadaan terkini\\nketepatan pada penanda aras GSM8K masalah perkataan matematik, melebihi walaupun\\nGPT-3 yang diperhalusi dengan pengverifikasi.\\nA: Kafeteria mempunyai 23 epal pada asalnya. Mereka menggunakan\\n20 untuk membuat makan tengah hari. Jadi mereka mempunyai 23 - 20 = 3. Mereka\\nmembeli 6 lagi epal, jadi mereka mempunyai 3 + 6 = 9. Jawapannya ialah 9.\\nPengesanan Rantaian\\nS: Roger mempunyai 5 bola tenis. Dia membeli 2 tin lagi\\nbola tenis. Setiap tin mempunyai 3 bola tenis. Berapa banyak\\nbola tenis yang dia ada sekarang?\\nA: Jawapannya ialah 11.\\nS: Kafeteria mempunyai 23 epal. Jika mereka menggunakan 20 untuk\\nmembuat makan tengah hari dan membeli 6 lagi, berapa banyak epal\\nadakah mereka mempunyai?\\nA: Jawapannya 27.\\nPengesanan Standard\\nS: Roger mempunyai 5 bola tenis. Dia membeli 2 tin lagi\\nbola tenis. Setiap tin mempunyai 3 bola tenis. Berapa banyak\\nbola tenis yang dia ada sekarang?\\nA: Roger bermula dengan 5 bola. 2 tin 3 bola tenis\\nsetiap satu ialah 6 bola tenis. 5 + 6 = 11. Jawapannya ialah 11.\\nS: Kafeteria mempunyai 23 epal. Jika mereka menggunakan 20 untuk\\nmembuat makan tengah hari dan membeli 6 lagi, berapa banyak epal\\nadakah mereka mempunyai?\\nInput Model\\nOutput Model Output\\nInput Model\\nRajah 1: Penyegerakan rantaian pemikiran membolehkan model bahasa besar menangani aritmetik yang kompleks,\\nakal dan tugas penaakulan simbolik. Proses penaakulan rantaian pemikiran diserlahkan.\\nPersidangan ke-36 mengenai Sistem Pemprosesan Maklumat Neural (NeurIPS 2022).\\narXiv:2201.11903v6 [cs.CL] 10 Jan 2023\\nPengenalan\\nMasalah Perkataan Matematik (GSM8K)\\n0\\n20\\n40\\n60\\n80\\n100\\n33\\n55\\n18\\n57\\nKadar penyelesaian (%)\\nGPT-3 175B yang diperhalusi\\nTerbaik sebelum ini\\nPaLM 540B: dorongan standard\\nPaLM 540B: dorongan rantaian pemikiran\\nRajah 2: PaLM 540B menggunakan rantaian pemikiran\\nmendorong untuk mencapai keadaan baharu-\\nprestasi terkini pada GSM8K\\npenanda aras masalah perkataan matematik.\\nGPT-3 yang diperhalusi dan yang terbaik sebelum ini adalah daripada\\nCobbe et al. (2021).\\nLandskap NLP baru-baru ini telah direvolusikan oleh\\nmodel bahasa (Peters et al., 2018; Devlin et al., 2019;\\nBrown et al., 2020, inter alia). Mengukur saiz bahasa\\nmodel telah ditunjukkan untuk memberikan pelbagai faedah,\\nseperti prestasi yang lebih baik dan kecekapan sampel (Kaplan\\net al., 2020; Brown et al., 2020, inter alia). Walau bagaimanapun,\\nskala saiz model sahaja tidak terbukti mencukupi untuk\\nmencapai prestasi tinggi pada tugas yang mencabar seperti\\naritmetik, akal dan penaakulan simbolik (Rae\\net al., 2021).\\nKerja ini meneroka bagaimana keupayaan penaakulan besar\\nmodel bahasa boleh dibuka kunci oleh kaedah mudah\\ndidorong oleh dua idea. Pertama, teknik untuk aritmetik\\npenaakulan boleh mendapat manfaat daripada menjana bahasa semula jadi\\nrasional yang membawa kepada jawapan akhir. Kerja terdahulu telah\\nmemberikan model keupayaan untuk menjana bahasa semula jadi perantaraan\\nlangkah dengan latihan dari awal (Ling et al., 2017)\\natau memperhalusi model pralatihan (Cobbe et al., 2021), di\\ntambahan kepada kaedah neuro-symbolik yang menggunakan bahasa formal\\nbukannya bahasa semula jadi (Roy dan Roth, 2015;\\nChiang dan Chen, 2019; Amini et al., 2019; Chen et al.,\\n2019). Kedua, model bahasa besar menawarkan yang menarik\\nprospek pembelajaran dalam konteks beberapa tangkapan melalui dorongan. Iaitu, bukannya memperhalusi satu pusat pemeriksaan model bahasa untuk setiap tugas baharu, seseorang boleh \"mendorong\" model dengan beberapa\\ncontoh input–output\\n']"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "ctranslate_model_gpu.generate(\n",
    "    [s], \n",
    "    max_input_length=2048,\n",
    "    max_decoding_length=2048,\n",
    "    disable_unk=True,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "# %%time\n",
    "\n",
    "# model.generate([s], to_lang = 'ms', max_length = 2048)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Too long to run using CPU, I had to comment the code."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
